ASP.NET Core-এ ডেটা ভ্যালিডেশনের জন্য সাধারণত Data Annotations ব্যবহার করা হয়। তবে কখনও কখনও ডিফল্ট ভ্যালিডেশন যথেষ্ট না হলে, ডেভেলপাররা কাস্টম ভ্যালিডেশন তৈরি করতে পারেন। কাস্টম ভ্যালিডেশন আপনাকে আপনার নির্দিষ্ট লজিকের ভিত্তিতে ডেটা যাচাই করার সুযোগ দেয়।
আপনার ভ্যালিডেশন লজিক তৈরির জন্য একটি ক্লাস তৈরি করুন, যা ValidationAttribute
থেকে ইনহেরিট করবে। উদাহরণস্বরূপ, নিচে একটি কাস্টম ভ্যালিডেশন দেখানো হলো, যা চেক করে যে একটি নাম অক্ষর দিয়ে শুরু হচ্ছে কিনা:
using System.ComponentModel.DataAnnotations;
public class StartsWithLetterAttribute : ValidationAttribute
{
private readonly char _letter;
public StartsWithLetterAttribute(char letter)
{
_letter = letter;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value is string stringValue && !stringValue.StartsWith(_letter))
{
return new ValidationResult($"The field must start with the letter '{_letter}'.");
}
return ValidationResult.Success;
}
}
মডেল ক্লাসে আপনার তৈরি করা কাস্টম ভ্যালিডেশন অ্যাট্রিবিউট ব্যবহার করুন।
public class Product
{
public int Id { get; set; }
[StartsWithLetter('P')]
public string Name { get; set; }
public decimal Price { get; set; }
}
Controller-এ মডেলের ডেটা যাচাই করা হয় এবং ত্রুটি পাওয়া গেলে তা ব্যবহারকারীর কাছে দেখানো হয়।
public class ProductsController : Controller
{
[HttpPost]
public IActionResult Create(Product product)
{
if (ModelState.IsValid)
{
// মডেলটি সঠিক, ডেটা সেভ করুন
return RedirectToAction("Index");
}
// মডেলে ত্রুটি আছে, ভিউতে ফিরে যান
return View(product);
}
}
আপনার ভ্যালিডেশন সিঙ্ক্রোনাস (সাধারণ পদ্ধতিতে) তৈরি করলে তা মডেলের ডেটা সাবমিটের সময়ই যাচাই হবে। এটি উপরের উদাহরণে দেখানো হয়েছে।
কখনও কখনও ভ্যালিডেশন অ্যাসিঙ্ক্রোনাস হতে পারে, যেমন ডাটাবেস থেকে ডেটা যাচাই করা। এর জন্য IValidatableObject
ইন্টারফেস ব্যবহার করা যায়।
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
public class Product : IValidatableObject
{
public int Id { get; set; }
public string Name { get; set; }
public async Task<IEnumerable<ValidationResult>> ValidateAsync(ValidationContext validationContext)
{
var validationResults = new List<ValidationResult>();
if (Name.Length < 5)
{
validationResults.Add(new ValidationResult("Name must be at least 5 characters long."));
}
return validationResults;
}
}
আপনার ভ্যালিডেশন মেসেজ কাস্টমাইজ করতে ErrorMessage
প্রপার্টি ব্যবহার করুন:
[StartsWithLetter('P', ErrorMessage = "The name must start with the letter 'P'.")]
public string Name { get; set; }
ASP.NET Core ভ্যালিডেশন ত্রুটি প্রদর্শনের জন্য ModelState এবং Tag Helpers ব্যবহার করে। উদাহরণ:
<form asp-action="Create">
<div>
<label asp-for="Name"></label>
<input asp-for="Name" />
<span asp-validation-for="Name" class="text-danger"></span>
</div>
<button type="submit">Submit</button>
</form>
ভ্যালিডেশন ত্রুটি প্রদর্শনের জন্য Validation Summary ব্যবহার করতে পারেন:
<div asp-validation-summary="All" class="text-danger"></div>
Custom Validation ASP.NET Core অ্যাপ্লিকেশনে ডেটা যাচাই করার জন্য একটি শক্তিশালী টুল। এটি ডেভেলপারদের নির্দিষ্ট লজিক বাস্তবায়ন করার সুযোগ দেয় এবং অ্যাপ্লিকেশনকে আরও কার্যকর এবং ব্যবহারকারীবান্ধব করে তোলে।
common.read_more